package moon.core.instruction;

import moon.core.ObjectMoon;
import moon.traverse.Visitor;

/** 
 * 
 * There are only four types of instructions in MOON: 
 * creation, assignment, calling and composites.
 * 
 * All message sending are associated to an entity. 
 * If we use an attribute or function, is an expression.
 * If we use a routine is an instruction.
 *
 * @author <a href="mailto:rmartico@ubu.es">Ra&uacute;l Marticorena</a>
 */
@SuppressWarnings("serial")
public abstract class Instr extends ObjectMoon{
    
	/**
	 * Constructor.
	 * 
	 * @param line line
	 * @param column column
	 */
    public Instr(int line, int column){
    	super();    	
    	this.setLine(line);
    	this.setColumn(column);
    }
    
	/**
     * Method from Pattern Design Visitor.
     * By RMS.
     * 
     * @param visitor visitor
     */
    public void accept(Visitor visitor){
    	// Hook method
    	visitor.visit(this);
    }

        
} // Instr
 